package com.mach.platform.service;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

/**
 * @author Anonymous
 * @Name
 * @Description: 数据库接口实体类
 * @date 2018/04/03   20:54
 */
public interface BaseService<T> {

		/**
		 * 保存
		 *
		 * @param t 保存的实体
		 * @return T 返回保存后的实体
		 */
		T save (T t);

		/**
		 * 插入，批量保存
		 *
		 * @param list 实体集合
		 * @return List<T>
		 */
		List<T> insertObjInBatch (List<T> list);

		/**
		 * 更新
		 *
		 * @param t 跟新的实体
		 * @return T
		 */
		T update (T t);

		/**
		 * 删除--批量删除
		 *
		 * @param ids 批量删除id
		 * @return int 影响数
		 */
		int delete (Long[] ids);

		/**
		 * 获取列表数据---使用 com.mach.platform.utils.springdata  下的DynamicSpecifications 的
		 * 写法进行分页查询
		 * @param pageable 分页参数
		 * @param params 其他参数
		 * @return Page<T>
		 */
		Page<T> list (Pageable pageable, Map params);

		/**
		 * 获取单体 数据
		 *
		 * @param id 获取详情的id
		 * @return T
		 */
		T info (Long id);

}
